﻿package net.libra.utils
{
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.utils.Dictionary;

	/**
	 * 显示对象方法集
	 * @author DanielLu
	 */
	public class DisplayObjectUtils
	{
		// 用于保存组件实例
		private static var map : Dictionary;

		public static function addDisplayObject ( key : String , mc : DisplayObject ) : void
		{
			if (map == null)
			{
				map = new Dictionary ();
			}
			map[key] = mc;
		}

		public static function removeDisplayObject ( key : String ) : void
		{
			if (map != null && map[key] != null)
			{
				delete map[key];
			}
		}

		public static function getDisplayObject ( key : String ) : DisplayObject
		{
			return map == null ? null : map[key];
		}

		/**
		 * 判断<code>parent</code>对象是否是<code>child</code>显示对象的父容器。
		 * @param parent		父显示对象
		 * @param child			子显示对象
		 * @return				<code>true</code>，<code>parent</code>对象是<code>child</code>显示对象的父容器
		 * 						<code>false</code>，<code>parent</code>对象不是<code>child</code>显示对象的父容器或者<code>parent</code>与<code>child</code>对象相同
		 */
		public static function isAncestor ( parent : DisplayObjectContainer , child : DisplayObject ) : Boolean
		{
			if (parent == null || child == null || parent == child)
			{
				return false;
			}
			//
			var p : DisplayObjectContainer = child.parent;
			while (p != null)
			{
				if (p == parent)
				{
					return true;
				}
				p = p.parent;
			}
			return false;
		}
	}
}
